Server-clustered server systems are used to provide scalable Web servers for clients operating transaction applications such as, for example, Web-based stock trading. Conventional server-clustered server systems use a Network Dispatcher/TCP router placed operationally in front of a server cluster of Web server nodes. Server-clustered server systems are also used to support parallel-processing tasks such as numerically intensive computing applications or data mining.
An emerging requirement for server-clustered server systems is concurrent support of transaction and parallel types of applications on server clusters, multiple server clusters, or in grid environments. Web based trading and other applications have highly variable loads; the ratio of peak to average traffic can be very high. Server-clustered server systems are typically configured to handle the peak workload. Consequently, conventional server-clustered server systems are relatively idle much of the time. The conventional server-clustered server system is a very inefficient use of computing resources.
One conventional attempt to more efficiently use computing resources in a server-clustered server system optimizes the assignment of work to a single server-cluster of servers. However, this optimization does not consider the service level agreement for each client. Consequently, this approach may optimize the use of the servers in the server cluster but not meet the service level agreements for one or more clients.
Another conventional attempt to more efficiently using computing resources in a server-clustered server system uses priorities to schedule individual requests to a given set of servers. This approach focuses on scheduling individual requests rather than allocating resources for classes of applications. In addition, this approach does not consider the service level agreements of the clients in allocating resources.
Yet another proposed approach utilizes a mechanism for describing service level agreements. This particular approach describes a method for gathering and sharing the data related to a service level agreement to determine whether the service level agreement is being met. However, this approach does not address actions that may be used to compensate current performance so that service level agreements may be met. In addition, this approach does not provide a means whereby different server clusters may accept workloads from one another.
All of the foregoing conventional approaches are formulated to use computing resources in a server-clustered server system focus on a single server cluster based domain, and do not address the issues involving multiple domains. These conventional methods are based either on reserving resources for specific jobs or ad hoc routing of applications to remote nodes.
What is therefore needed is a method that distributes the available capacity of the server cluster, or more generally a grid, among transaction and parallel applications. Transaction applications are comprised of tasks that are small discrete events such as, for example, stock trading transactions. Parallel tasks are numerically intensive tasks such as, for example, a stock portfolio optimization. This method should provide dynamic sharing of resources across a server cluster such that service level agreements may be met when resources are available. The need for such a solution has heretofore remained unsatisfied.
Numerous organizations utilize multiple independently operated domains that typically reside at geographically distributed sites. Sharing resources across domains can result in better overall utilization of computing and personnel resources. Specifically, when resources within a domain have been exhausted and service level agreements can no longer be met using resources within the domain, resources at other domains may be used to satisfy the service level agreements. However, no method currently exists for sharing resources among multiple, potentially remote domains.
What is also needed is a method that distributes the available capacity of the resources across multiple domains, or more generally a grid, among transaction and parallel applications. This method should provide dynamic sharing of resources across multiple domains such that service level agreements may be met when resources are available. The need for such a solution has heretofore remained unsatisfied.